/*
 Copyright (C) 2010 Kristian Duske

 This file is part of TrenchBroom.

 TrenchBroom is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 TrenchBroom is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with TrenchBroom. If not, see <http://www.gnu.org/licenses/>.
 */

#include "Shaders.h"

namespace tb::render::Shaders
{

const ShaderConfig Grid2DShader = ShaderConfig{
  "2D Grid",
  {"Grid2D.vertsh"},
  {"Grid.fragsh", "Grid2D.fragsh"},
};

const ShaderConfig VaryingPCShader = ShaderConfig{
  "Varying Position / Color",
  {"VaryingPC.vertsh"},
  {"VaryingPC.fragsh"},
};

const ShaderConfig VaryingPUniformCShader = ShaderConfig{
  "Varying Position / Uniform Color",
  {"VaryingPUniformC.vertsh"},
  {"VaryingPC.fragsh"},
};

const ShaderConfig MiniMapEdgeShader = ShaderConfig{
  "MiniMap Edges",
  {"MiniMapEdge.vertsh"},
  {"MiniMapEdge.fragsh"},
};

const ShaderConfig EntityModelShader = ShaderConfig{
  "Entity Model",
  {"EntityModel.vertsh"},
  {"MapBounds.fragsh", "EntityModel.fragsh"},
};

const ShaderConfig FaceShader = ShaderConfig{
  "Face",
  {"Face.vertsh"},
  {"Grid.fragsh", "MapBounds.fragsh", "Face.fragsh"},
};

const ShaderConfig PatchShader = ShaderConfig{
  "Patch",
  {"Face.vertsh"},
  {"Grid.fragsh", "MapBounds.fragsh", "Face.fragsh"},
};

const ShaderConfig EdgeShader = ShaderConfig{
  "Edge",
  {"Edge.vertsh"},
  {"MapBounds.fragsh", "Edge.fragsh"},
};

const ShaderConfig ColoredTextShader = ShaderConfig{
  "Colored Text",
  {"ColoredText.vertsh"},
  {"Text.fragsh"},
};

const ShaderConfig TextShader = ShaderConfig{
  "Text",
  {"Text.vertsh"},
  {"Text.fragsh"},
};

const ShaderConfig TextBackgroundShader = ShaderConfig{
  "Text Background",
  {"TextBackground.vertsh"},
  {"TextBackground.fragsh"},
};

const ShaderConfig MaterialBrowserShader = ShaderConfig{
  "Material Browser",
  {"MaterialBrowser.vertsh"},
  {"MaterialBrowser.fragsh"},
};

const ShaderConfig MaterialBrowserBorderShader = ShaderConfig{
  "Material Browser Border",
  {"MaterialBrowserBorder.vertsh"},
  {"MaterialBrowserBorder.fragsh"},
};

const ShaderConfig HandleShader = ShaderConfig{
  "Handle",
  {"Handle.vertsh"},
  {"Handle.fragsh"},
};

const ShaderConfig ColoredHandleShader = ShaderConfig{
  "Colored Handle",
  {"ColoredHandle.vertsh"},
  {"Handle.fragsh"},
};

const ShaderConfig CompassShader = ShaderConfig{
  "Compass",
  {"Compass.vertsh"},
  {"Compass.fragsh"},
};

const ShaderConfig CompassOutlineShader = ShaderConfig{
  "Compass Outline",
  {"CompassOutline.vertsh"},
  {"Compass.fragsh"},
};

const ShaderConfig CompassBackgroundShader = ShaderConfig{
  "Compass Background",
  {"VaryingPUniformC.vertsh"},
  {"VaryingPC.fragsh"},
};

const ShaderConfig LinkLineShader = ShaderConfig{
  "Link Line",
  {"LinkLine.vertsh"},
  {"LinkLine.fragsh"},
};

const ShaderConfig LinkArrowShader = ShaderConfig{
  "Link Arrow",
  {"LinkArrow.vertsh"},
  {"LinkArrow.fragsh"},
};

const ShaderConfig TriangleShader = ShaderConfig{
  "Shaded Triangles",
  {"Triangle.vertsh"},
  {"Triangle.fragsh"},
};

const ShaderConfig UVViewShader = ShaderConfig{
  "UV View",
  {"UVView.vertsh"},
  {"UVView.fragsh"},
};

} // namespace tb::render::Shaders
